A computing device typically executes software, referred to as an “operating system” that is responsible for providing an interface between hardware of the computing device and application software. The operating system also generally provides common services for execution of the application software. The operating system may include a number of different components for providing the interface between the hardware and the application software, such as a kernel component, a networking component, a security component and a user interface component. The kernel component (which is often referred to as the “kernel”), may represent the core component that manages or otherwise controls the interface between application software and the hardware of the computing device. The kernel manages the execution of application software by the underlying hardware, instantiating or otherwise creating processes, allocating memory and other hardware resources for use by the processes, establishing priorities for the processes, loading program instructions into memory and scheduling execution of the loaded instructions associated with the process by the underlying hardware.
Processes executing on a computing device may represent executing instances of computer programs. A scheduler component of an operating system is responsible for scheduling the one or more processes for execution. Schedulers of some operating systems may also provide support for multithreading. Schedulers of multiprogramming operating systems may apply time-division multiplexing techniques that enable a processor to execute multiple different threads of a process such that a particular thread is executed for a specified period of time before the operating system selects a different thread for execution. Some operating system may further include data structures such as run queue to schedule and further prioritize different threads for execution. The operating system may also include a sleep queue to store inactive threads that are not presently scheduled for execution. As applications are executed by a processor, the operating system may switch threads between the run queue and sleep queue based on application and operating system instructions.
The performance of a computing device is dependent on, among other things, the number of executing processes and threads, the type of operations performed by each executing process or thread, and the implementation of operating system itself. In some examples, computing device performance problems may be difficult to detect and therefore solve when a large number of possible root causes may affect system performance. Failure to quickly and easily identify performance issues of a computing device may negatively affect debugging efforts and product development processes.